import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * En esta clase se crean las opciones para la validación de los movimientos.
 * 
 * @author Ulises Yamil Castorena Caldera. 
 * @version 1.0
 */
public class Persona extends Enemigo
{   
    /**
     * Contructor de la clase Persona, se igualan los valores y se crea el objeto para mostrar la imagen.
     * @param valor Dependiendo del valor que tenga va a ser la ubicación del objeto.
     */
    public Persona(boolean valor)
    {        
        ubic = valor;       
        img = new GreenfootImage("peaton.png");
        if(!ubic)
        {
            setImage(img);
        }
        else if(ubic)
        {
            img.mirrorVertically();
            setImage(img);
        }
    }
    
    /**
     * Método Act de la clase Persona, en el se muestra la imagen, se mueve y se valida la opcion para remover la imagen.
     */
    public void act() 
    {
        setImage(img);
        super.mueve();
        intersecta();        
    }        
   
    /**
     * Método que valida si un objeto de esta clase se topa con otro de la clase Personaje o si el objeto llega al final de la pantalla.
     */
    public void intersecta()
    {
        Actor otro;
        otro = getOneIntersectingObject(Personaje.class);
        if(this.getX() == 0)
           getWorld().removeObject(this); 
        if(otro != null)                             
           realiza();
    }
    
     /**
     * Este método esta redefinido en la clase para para su implementacion segun sea el caso.
     */
    public void realiza()
    {
        ((Mundo)getWorld()).mandaPolicia(ubic);
        getWorld().removeObject(this); 
    }
}
